package com.registration.service;

import com.registration.bean.DepartmentBean;
import com.registration.bean.DoctorBean;

import java.util.List;

public interface DepartmentService {
    /**
     * 获取一级科室列表（如内科、外科）
     * @return 一级科室列表（DepartmentBean）
     */
    List<DepartmentBean> getFirstLevelDepts();

    /**
     * 根据父科室ID获取二级科室列表（如内科→心内科）
     * @param parentDeptId 父科室ID
     * @return 二级科室列表（DepartmentBean）
     */
    List<DepartmentBean> getSecondLevelDepts(Integer parentDeptId);

    /**
     * 根据科室ID查询该科室下的医生列表（仅正常出诊医生）
     * 对应需求：挂号预约模块中“选择科室后展示该科室医生”功能
     * @param deptId 科室ID
     * @return 医生列表（DoctorBean）
     */
    List<DoctorBean> getDoctorsByDeptId(Integer deptId);

    /**
     * 根据科室ID查询科室详情（仅正常状态）
     * @param deptId 科室ID
     * @return 科室详情（DepartmentBean），不存在时返回null
     */
    DepartmentBean getDeptById(Integer deptId);

    /**
     * 一次性查询所有科室并构建层级结构（一级科室包含二级科室列表）
     * @return 带层级的科室列表
     */
    List<DepartmentBean> getAllDepartmentsWithHierarchy();
}
